HTTP는 웹 서버로부터 정보를 빠르고, 간편하고, 정확하게 사람들의 PC에 전달한다.
- jpeg 이미지
- html 페이지
- 텍스트 파일
- mpeg 동영상
- wav 음성 파일 등
컨텐츠는 웹 서버에 저장되고 클라이언트가 데이터를 요청하면 제공한다. 가장 기본적으로 브라우저의 주소창에 URL을 입력하면 해당 URL이 가리키는 IP의 웹서버의 index.html을 요청한다는 뜻이다.
HTTP는 전송되는 객체의 데이터 타입에 따라 MIME 타입이라는 데이터 포맷 라벨을 붙인다. 이 타입은 Content-type 속성에 기입되어 클라이언트 혹은 서버는 이 MIME타입에 따라 데이터를 해석한다.
통합 자원 식별자(uniform resource identifier). 웹 서버 리소스는 각 리소스의 고유한 위치와 이름을 지정하기 위해 사용된다.
통합 자원 지시자(uniform resource locator)는 URI의 가장 흔한 형태로 리소스가 정확히 어디있고 어떻게 접근할 수 있는지 알려준다. URL은 세부분으로 이루어져 있다.
- scheme : 리소스에 접근하기 위한 프로토콜 (http://)
- host : 서버의 인터넷 주소
- path : 서버의 리소스 경로
- GET : 지정한 리소스를 받기
- PUT : 클라이언트에서 서버로 보낸 데이터로 지정한 리소스의 전체 교체
- DELETE : 지정한 리소스의 삭제
- POST : 클라이언트에서 서버로 데이터를 업로드
- HEAD : 지정한 리소스의 응답에서 헤더 부분만 보내기
- 200 ~ : 성공
- 300 ~ : 다시 보내야 함
- 400 ~ : 클라이언트에서 뭔가를 잘못 요청함
- 시작줄 : 프로토콜, 메서드, 리소스, 상태코드
- 헤더 : key, value 쌍의 설정
- 본문 : 실제 전송할 내용
HTTP는 애플리케이션 계층 프로토콜임으로, 네트워크 통신의 핵심 세부사항은 TCP/IP에게 맡긴다.
- 서버의 URL에서 호스트 명을 추출한다.
- 서버의 호스트 명을 IP로 변환한다.
- URL에서 포트번호를 있다면 추출하고 없다면 80을 사용한다.
- 브라우저는 서버와 TCP 커넥션을 맺는다.
- 브라우저는 서버에 HTTP 요청을 보낸다.
- 서버는 브라우저에 HTTP 응답을 돌려준다.
- 커넥션이 닫히면, 브라우저는 문서를 보여준다.
- HTTP/0.9 : 간단한 HTML 객체를 받아오기 위해 만들어 진 것. GET 메서드만 존재.
- HTTP/1.0 : 널리 쓰이기 시작한 HTTP 버전. 시각적으로 매력적인 웹페이지와 상호작용하는 폼을 실현.
- HTTP/1.0+ : 월드 와이드 웹이 급경히 성장하면서 새로운 요구를 충족시키기 위해 HTTP에 기능을 추가한 버전.
- HTTP/1.1 : 설계의 결함 교정, 성능 최적화, 잘못된 기능이 제거된 현대의 HTTP 버전
- HTTP/2.0 : 1.1의 성능 문제를 개선한 SPDY 기반으로 설계된 프로토콜. 현재는 2.0을 사용하는 경우도 꽤 많다.